package com.ruoyi.travel.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 旅游产品对象 travel_product
 * 
 * @author ruoyi
 */
public class TravelProduct extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 产品ID */
    private Long productId;

    /** 店铺ID */
    private Long shopId;

    /** 分类ID */
    private Integer categoryId;

    /** 商品编码 */
    private String productCode;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String productName;

    /** 商品类型 */
    private String productType;

    /** 市场价 */
    private BigDecimal marketPrice;

    /** 目的地 */
    private String destination;

    /** 上线时间 */
    private String onlineAt;

    /** 下线时间 */
    private String offlineAt;

    /** 销量 */
    private Integer salesCount;

    /** 创建时间 */
    private String createdAt;

    /** 更新时间 */
    private String updatedAt;

    /** 产品标题（兼容旧字段） */
    @Excel(name = "产品标题")
    private String title;

    /** 目的地 */
    @Excel(name = "目的地")
    private String location;

    /** 城市 */
    private String city;

    /** 省份 */
    private String province;

    /** 产品图片 */
    @Excel(name = "产品图片")
    private String image;

    /** 评分 */
    @Excel(name = "评分")
    private BigDecimal rating;

    /** 评价数量 */
    @Excel(name = "评价数量")
    private Long reviewCount;

    /** 销量 */
    @Excel(name = "销量")
    private Long sales;

    /** 价格 */
    @Excel(name = "价格")
    private BigDecimal price;

    /** 原价 */
    @Excel(name = "原价")
    private BigDecimal originalPrice;

    /** 最早出行日期 */
    @Excel(name = "最早出行日期")
    private String earliestDate;

    /** 产品类型（normal普通 flash-sale秒杀 group-buy拼团 bargain砍价 seasonal-hot当季热门） */
    @Excel(name = "产品类型")
    private String type;

    /** 秒杀价格 */
    @Excel(name = "秒杀价格")
    private BigDecimal flashSalePrice;

    /** 秒杀剩余数量 */
    @Excel(name = "秒杀剩余数量")
    private Long flashSaleRemaining;

    /** 产品详情 */
    private String detail;

    /** 产品状态（0正常 1停用） */
    @Excel(name = "产品状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 排序 */
    @Excel(name = "排序")
    private Integer orderNum;

    /** 搜索关键词（不映射到数据库，仅用于查询） */
    private String keyword;

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }

    public void setShopId(Long shopId) 
    {
        this.shopId = shopId;
    }

    public Long getShopId() 
    {
        return shopId;
    }

    public void setCategoryId(Integer categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Integer getCategoryId() 
    {
        return categoryId;
    }

    public void setProductCode(String productCode) 
    {
        this.productCode = productCode;
    }

    public String getProductCode() 
    {
        return productCode;
    }

    public void setProductName(String productName) 
    {
        this.productName = productName;
    }

    public String getProductName() 
    {
        return productName;
    }

    public void setProductType(String productType) 
    {
        this.productType = productType;
    }

    public String getProductType() 
    {
        return productType;
    }

    public void setMarketPrice(BigDecimal marketPrice) 
    {
        this.marketPrice = marketPrice;
    }

    public BigDecimal getMarketPrice() 
    {
        return marketPrice;
    }

    public void setDestination(String destination) 
    {
        this.destination = destination;
    }

    public String getDestination() 
    {
        return destination;
    }

    public void setOnlineAt(String onlineAt) 
    {
        this.onlineAt = onlineAt;
    }

    public String getOnlineAt() 
    {
        return onlineAt;
    }

    public void setOfflineAt(String offlineAt) 
    {
        this.offlineAt = offlineAt;
    }

    public String getOfflineAt() 
    {
        return offlineAt;
    }

    public void setSalesCount(Integer salesCount) 
    {
        this.salesCount = salesCount;
    }

    public Integer getSalesCount() 
    {
        return salesCount;
    }

    public void setCreatedAt(String createdAt) 
    {
        this.createdAt = createdAt;
    }

    public String getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(String updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public String getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setLocation(String location) 
    {
        this.location = location;
    }

    public String getLocation() 
    {
        return location;
    }

    public void setCity(String city) 
    {
        this.city = city;
    }

    public String getCity() 
    {
        return city;
    }

    public void setProvince(String province) 
    {
        this.province = province;
    }

    public String getProvince() 
    {
        return province;
    }

    public void setImage(String image) 
    {
        this.image = image;
    }

    public String getImage() 
    {
        return image;
    }

    public void setRating(BigDecimal rating) 
    {
        this.rating = rating;
    }

    public BigDecimal getRating() 
    {
        return rating;
    }

    public void setReviewCount(Long reviewCount) 
    {
        this.reviewCount = reviewCount;
    }

    public Long getReviewCount() 
    {
        return reviewCount;
    }

    public void setSales(Long sales) 
    {
        this.sales = sales;
    }

    public Long getSales() 
    {
        return sales;
    }

    public void setPrice(BigDecimal price) 
    {
        this.price = price;
    }

    public BigDecimal getPrice() 
    {
        return price;
    }

    public void setOriginalPrice(BigDecimal originalPrice) 
    {
        this.originalPrice = originalPrice;
    }

    public BigDecimal getOriginalPrice() 
    {
        return originalPrice;
    }

    public void setEarliestDate(String earliestDate) 
    {
        this.earliestDate = earliestDate;
    }

    public String getEarliestDate() 
    {
        return earliestDate;
    }

    public void setType(String type) 
    {
        this.type = type;
    }

    public String getType() 
    {
        return type;
    }

    public void setFlashSalePrice(BigDecimal flashSalePrice) 
    {
        this.flashSalePrice = flashSalePrice;
    }

    public BigDecimal getFlashSalePrice() 
    {
        return flashSalePrice;
    }

    public void setFlashSaleRemaining(Long flashSaleRemaining) 
    {
        this.flashSaleRemaining = flashSaleRemaining;
    }

    public Long getFlashSaleRemaining() 
    {
        return flashSaleRemaining;
    }

    public void setDetail(String detail) 
    {
        this.detail = detail;
    }

    public String getDetail() 
    {
        return detail;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setOrderNum(Integer orderNum) 
    {
        this.orderNum = orderNum;
    }

    public Integer getOrderNum() 
    {
        return orderNum;
    }

    public void setKeyword(String keyword) 
    {
        this.keyword = keyword;
    }

    public String getKeyword() 
    {
        return keyword;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("productId", getProductId())
            .append("shopId", getShopId())
            .append("categoryId", getCategoryId())
            .append("productCode", getProductCode())
            .append("productName", getProductName())
            .append("productType", getProductType())
            .append("marketPrice", getMarketPrice())
            .append("province", getProvince())
            .append("city", getCity())
            .append("destination", getDestination())
            .append("status", getStatus())
            .append("onlineAt", getOnlineAt())
            .append("offlineAt", getOfflineAt())
            .append("salesCount", getSalesCount())
            .append("rating", getRating())
            .append("reviewCount", getReviewCount())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("title", getTitle())
            .append("location", getLocation())
            .append("image", getImage())
            .append("price", getPrice())
            .append("originalPrice", getOriginalPrice())
            .append("earliestDate", getEarliestDate())
            .append("type", getType())
            .append("flashSalePrice", getFlashSalePrice())
            .append("flashSaleRemaining", getFlashSaleRemaining())
            .append("detail", getDetail())
            .append("orderNum", getOrderNum())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}

